package com.rchat.pocmini.activity.fragment.groups;

import com.aso.common.http.delegate.HttpCallbackImpl;
import com.rchat.pocmini.activity.bean.GroupBean;
import com.rchat.pocmini.common.mvp.BaseModel;
import com.rchat.pocmini.common.mvp.BasePresenter;
import com.rchat.pocmini.common.mvp.BaseView;

import java.util.ArrayList;

/**
 * Created by itsdf07 on 2017/7/25.
 */

public interface GroupsContract {
    interface View extends BaseView {
        /**
         * 列表刷新
         */
        void updateList(ArrayList<GroupBean> data);

        /**
         * 刷新当前监听的频道数组
         *
         * @param data
         */
        void updateListenChannel(ArrayList<GroupBean> data);

        /**
         * 刷新会员到期时间
         *
         * @param expireData
         */
        void updateExpireData(String expireData);

        /**
         * 刷新昵称
         *
         * @param nickName
         */
        void updateNickName(String nickName);

        /**
         * 非会员提示
         */
        void unVipTip();

    }

    abstract class Presenter extends BasePresenter<GroupsContract.View, GroupsContract.Model> {
        /**
         * @return 当前频道监听中的列表
         */
        abstract ArrayList<GroupBean> getChannelListeningList();

        /**
         * 设置频道监听
         *
         * @param bean
         */
        abstract void setChannelListened(GroupBean bean);

        /**
         * 设置频道锁
         *
         * @param bean
         */
        abstract void setChannelLocked(GroupBean bean);

        /**
         * 检测账号会员状态
         *
         * @param groupsCount 当前账号所创建的群主数
         * @return {@code true} 会员 {@code false} 非会员
         */
        abstract boolean checkVipStatus(int groupsCount);

        /**
         * 修改群组名称
         *
         * @param groupId
         * @param newName
         */
        abstract void modifyGroupName(String groupId, String newName);
    }

    interface Model extends BaseModel {
        /**
         * 登录
         *
         * @param url      url
         * @param body     请求内容体
         * @param callback 请求回调
         */
        void modifyGroupName(String url, String body, HttpCallbackImpl callback);

        /**
         * 获取账号状态信息
         *
         * @param userName
         * @param callback
         */
        void requestAccountStatus(String userName, HttpCallbackImpl callback);
    }
}
